package com.hua.controller;

import com.hua.pojo.Temp;
import com.hua.pojo.User;
import com.hua.service.TempService;
import com.hua.utils.HandleTokenUtils;
import com.hua.utils.JwtUtils;
import com.hua.utils.Result;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;
import java.util.Map;

/**
 * <p>
 *  改控制类处理一些零碎的请求
 * </p>
 *
 * @author hua
 * @since 2023-12-24
 */
@Api(tags = "杂七杂八的请求管理")
@RestController
@RequestMapping("/temp")
public class TempController {
  
    
    @Autowired
    private TempService tempService;
    @Autowired//处理jwt是否有效
    private HandleTokenUtils handleTokenUtils;
    @Autowired//解析jwt
    private JwtUtils jwtUtils;


    //被遗弃的
    //获取首页展示的轮播图
    @ApiOperation("获取首页banner展示图API")
    @GetMapping("/getCarouselUrlList")
    public Result getCarouselUrlList(){
        //调用数据层查询结果返回
        Map<String, Object> pirUrlList = tempService.getCarouselUrlList();
        //把查询出来的数据返回给前端
        return Result.success(pirUrlList,"获取首页banner展示图数据成功！");
    }


//    //被遗弃
//    @ApiOperation("覆盖首页banner展示图API")
//    @PostMapping("/updateBannerImg")
//    public Result updateBannerImg(@RequestBody Map<String, Object> requestData){
//
//
//        String token = (String) requestData.get("token");
//        List<String> bannerArr = (List<String>) requestData.get("bannerArr");
//
//
//        /**
//         * 处理token
//         */
//        //判断jwt是否还有效
//        boolean b = handleTokenUtils.checkJWTIsLost(token, User.class);
//        if(!b){//登录失效返回20002状态码
//            return Result.loginFailure();
//        }
//        //登录有效
//        //解析token封装到对象
//        User user = jwtUtils.parseToken(token, User.class);
//
//        //从对象中获取permission
//        int permission = user.getPermission();
//
//        if (permission == 2) { // 总管理员
//            // ①先全部删除
//            int deleteAll = tempService.deleteAll();
//            // ②再新增插入
//            for (String banner : bannerArr) {
//                // 执行插入操作，将 banner 插入数据库中
//                Temp temp = new Temp();
//                temp.setPicUrl(banner);
//                int i = tempService.insertOne(temp);
//                if(i==1){continue;}//成功继续执行
//                else {return Result.fail("系统出了点小问题");}
//            }
//            return Result.success("修改成功！");
//        } else {
//            return Result.fail("权限不足！");
//        }
//
//    }




    //新增
    @ApiOperation("新增banner图")
    @PostMapping("/addBannerImg")
    public Result addBannerImg(@RequestBody Map<String, Object> requestData){


        String token = (String) requestData.get("token");
        String  picUrl = (String) requestData.get("picUrl");


        //封装
        Temp newTemp=new Temp();
        newTemp.setPicUrl(picUrl);


        /**
         * 处理token
         */
        //判断jwt是否还有效
        boolean b = handleTokenUtils.checkJWTIsLost(token, User.class);
        if(!b){//登录失效返回20002状态码
            return Result.loginFailure();
        }
        //登录有效
        //解析token封装到对象
        User user = jwtUtils.parseToken(token, User.class);

        //从对象中获取permission
        int permission = user.getPermission();

        if (permission == 2) { // 总管理员
            int i = tempService.addBannerImg(newTemp);
            if(i==1){
                //新增成功，返回更新后的url数组
                //调用数据层查询结果返回
                Map<String, Object> pirUrlList = tempService.getCarouselUrlList();
                //把查询出来的数据返回给前端
                return Result.success(pirUrlList,"更新后的banner展示图数据！");
            }else{
                return Result.fail("系统出了点小问题！");
            }

        } else {
            return Result.fail("权限不足！");
        }

    }




    //删除，通过id删除
    @ApiOperation("删除banner图")
    @PostMapping("/deleteBannerImg")
    public Result deleteBannerImg(@RequestBody Map<String, Object> requestData){


        String token = (String) requestData.get("token");
        int  id = (int) requestData.get("id");


        //封装
        Temp deleteTemp=new Temp();
        deleteTemp.setId(id);

        /**
         * 处理token
         */
        //判断jwt是否还有效
        boolean b = handleTokenUtils.checkJWTIsLost(token, User.class);
        if(!b){//登录失效返回20002状态码
            return Result.loginFailure();
        }
        //登录有效
        //解析token封装到对象
        User user = jwtUtils.parseToken(token, User.class);

        //从对象中获取permission
        int permission = user.getPermission();

        if (permission == 2) { // 总管理员
            int i = tempService.deleteBannerImg(deleteTemp);
            if(i==1){
                //删除成功，返回更新后的url数组
                //调用数据层查询结果返回
                Map<String, Object> pirUrlList = tempService.getCarouselUrlList();
                //把查询出来的数据返回给前端
                return Result.success(pirUrlList,"更新后的banner展示图数据！");

            }else{
                return Result.fail("系统出了点小问题！");
            }

        } else {
            return Result.fail("权限不足！");
        }

    }
}
